In data communication environments, such as a distributed network, many different vendors provide products for their specific services. Heretofore, a predetermined set of protocols has been required to be specified to enable arbitrary components in the environment to communicate with each other, assuming the components were transmitting or receiving data, hereinafter referred to as (“transferring data”). For example, a device manufactured by one vendor would have difficulty communicating with a device manufactured by another vendor without using the predetermined set of protocols mentioned above. The problem of different vendors requiring different predetermined protocols has been partially dealt with by adopting existing protocol standards. However, there are different standards organizations and thus different protocol standards.
When arbitrary components such as computer applications or programs, data, memory, file directories, individual files, printer devices, cellular telephones, facsimile machines, copier machines, scanner devices, desk-top computers, lap-top computers, PDA systems, or any other device, for example, attempt to communicate without having prior knowledge of each other, particular domain-specific protocols, such as the file system domain (e.g., NFS and CIFS) or the printer domain (e.g., IPP and LPR) must be known by both parties to successfully communicate. An arbitrary component, such as an application attempting to communicate with a file system or a printer device, must be explicitly programmed to understand one or more of the standardized protocols mentioned above. However, if new components enter the equation, the application must be reprogrammed to understand the new standardized protocols used to communicate with the new components. Thus, each application must be explicitly written to use a particular set of standardized protocols a priori to communicating with the components associated with the protocols.
For example, in a system such as Jini™, developed by Sun Microsystems of Palo Alto, Calif., which is hereby incorporated by reference in its entirety, in order for a component such as an application to communicate with another component such as a printer, the application must contain a priori knowledge of the semantics of the printer's programmatic interfaces. In other words, an application that knows how to print still would not know how to communicate with a file system, scanner or a network translation service until it was explicitly programmed to know how to communicate with the interface for the particular components.
The problems noted above are exacerbated when components utilize different data transfer mediums. For instance, a person using a cellular telephone might want to communicate with a printer device to print out a list of contact phone numbers. Since the cellular telephone may only be able to communicate using its wireless data transfer medium and associated protocols while the printer device may only be able to communicate using a line-based data transfer medium and associated protocols, there would be no way for the devices to communicate directly without involving a third party and one of the devices having a priori knowledge of each other as discussed above.